package cn.xlbweb.cli.service;

import cn.xlbweb.cli.common.ServerResponse;
import cn.xlbweb.cli.common.TableResponse;
import cn.xlbweb.cli.common.TreeResponse;
import cn.xlbweb.cli.pojo.dto.DeleteRoleDTO;
import cn.xlbweb.cli.pojo.dto.InsertRoleDTO;
import cn.xlbweb.cli.pojo.dto.ListRoleDTO;
import cn.xlbweb.cli.pojo.dto.UpdateRoleDTO;

/**
 * @author: bobi
 * @date: 2019-09-16 23:16
 * @description:
 */
public interface IRoleService {

    /**
     * 分页模糊查询角色
     *
     * @param listRoleDTO
     * @return
     */
    TableResponse listRole(ListRoleDTO listRoleDTO);

    /**
     * 插入角色
     *
     * @param insertRoleDTO
     * @return
     */
    ServerResponse insertRole(InsertRoleDTO insertRoleDTO);

    /**
     * 更新角色
     *
     * @param updateRoleDTO
     * @return
     */
    ServerResponse updateRole(UpdateRoleDTO updateRoleDTO);

    /**
     * 删除角色
     *
     * @param deleteRoleDTO
     * @return
     */
    ServerResponse deleteRole(DeleteRoleDTO deleteRoleDTO);

    /**
     * 查询所有的角色 只含id、name
     *
     * @return
     */
    ServerResponse listRoleName();

    /**
     * 根据角色获取对应的权限树
     *
     * @param roleId
     * @return
     */
    TreeResponse listAuthorize(Integer roleId);

    /**
     * 为角色赋权
     *
     * @param roleId
     * @param permissionIds
     * @return
     */
    ServerResponse authorize(Integer roleId, String permissionIds);

    /**
     * 查询该角色已授权和未授权的用户
     *
     * @param roleId
     * @return
     */
    ServerResponse listAssign(Integer roleId);

    /**
     * 为角色分配用户
     *
     * @param roleId
     * @param userIds
     * @return
     */
    ServerResponse assign(Integer roleId, String userIds);
}
